#include <iostream>

// 基类
class Base {
public:
    virtual void display() const {  // 虚函数以支持多态
        std::cout << "Display Base class" << std::endl;
    }
    virtual ~Base() {}  // 虚析构函数以支持多态
};

// 派生类
class Derived : public Base {
public:
    void display() const override {  // 重写基类的虚函数
        std::cout << "Display Derived class" << std::endl;
    }
};

int main() {
    Derived d;         // 派生类对象
    Base* b = &d;      // 自然向上转型，无需显式转换
    b->display();      // 调用 Derived 的 display，展示多态性

    // 使用 static_cast 进行显式向上转型
    Derived d2;
    Base* b2 = static_cast<Base*>(&d2);
    b2->display();     // 同样调用 Derived 的 display

    return 0;
}